import Axios from 'axios';
import { useUserStore } from '@/stores';
import { ElMessage } from 'element-plus'
import router from '@/router';

const baseURL = 'http://localhost:5175'// 请求接口地址

const axios = Axios.create({
  //headers: { 'Content-Type': 'application/json' }, 不能一开始就设置
  timeout: 60000, // 超时
  baseURL // 请求接口地址
});



// 添加请求拦截器
axios.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  const useStore = useUserStore()
  if (useStore.token) {
    // 在请求之前，能成功的话，我们就把请求头给请求工具，可以访问保密数据
    config.headers.Authorization = useStore.token
  }
  return config;
}, function (error) {
  // 对请求错误做些什么， 给错误提示
  return Promise.reject(error);
});




// 添加响应拦截器
axios.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  // 如果响应之前，能成功的话，我们要看接口文档，成功的状态码是多少，例如 code=0，如果符合就返回数据
  if (response.data.code === 0) {
    return response
  }
  //失败时(提示消息，查看文档)，类似return response
  ElMessage.error(response.data.message || '服务器异常')
  return Promise.reject(response.data)
}, function (error) {
  // 对响应错误做点什么， 给错误提示
  //错误的特殊情况=>401权限不足或token 过期 =>拦截到登录页
  if (error.response?.status === 401) {
    router.push("/login")
  }
  // 错误的默认情况 => 只给提示
  ElMessage.error(error.response.data.message || '服务异常')
  return Promise.reject(error);
});

export default axios;
export { baseURL }
